关于浮点数:如何抑制Python中的科学计数法? | 您所在的位置:网站首页 › python float转string保留小数 › 关于浮点数:如何抑制Python中的科学计数法? |
这是我的代码: 123x = 1.0 y = 100000.0 print x/y我的商显示为1.00000e-05 有什么方法可以抑制科学计数法并使其显示为 0.00001? 我将使用结果作为字符串。 相关讨论 1/10000 = 0.0001 = 1.00000e-04 @AA,假设它是赋值语句中的错字,我已经改正了。使用较新的版本''.format(还要记住指定要显示在.之后的位数,这取决于浮点数是多少)。请参阅以下示例: 123>>> a = -7.1855143557448603e-17 >>> '{:f}'.format(a) '-0.000000'如上图所示,默认值为6位!这对我们的案例没有帮助,因此我们可以使用类似以下的内容: 12>>> '{:.20f}'.format(a) '-0.00000000000000007186'更新资料 从Python 3.6开始,可以使用新的格式化字符串文字来简化此过程,如下所示: 12>>> f'{a:.20f}' '-0.00000000000000007186' 相关讨论 如何在指定有效数字的同时执行此操作? 1'%f' % (x/y)但是您需要自己管理精度。例如。, 1'%f' % (1/10**8)将仅显示零。 详细信息在文档中 或对于Python 3,等效的旧格式或新样式格式 相关讨论 我知道这非常简单-非常感谢! 我建议澄清您的陈述,说"您可以自己管理精度的显示"。 实际的(Python内部)精度没有更改,就像其他语言经常这样做一样。使用较新版本的Python(2.6和更高版本),您可以使用''.format()完成@SilentGhost建议的操作: 1'{0:f}'.format(x/y) 相关讨论 这真的是您想要的吗? 我不:>>> print({:f}.format(0.000000123)) 0.000000 @duality,您可能需要指定精度。 {0:.10f}如果您使用的是熊猫并且想抑制所有浮标的科学计数法,则另一种选择是调整熊猫选项。 12import pandas as pd pd.options.display.float_format = '{:.2f}'.format这是使用Cucumber上尉的答案,但有2个补充。 1)允许函数获取非科学计数法数字并按原样返回它们(因此您可以输入很多数字,其中一些数字为0.00003123与3.123e-05,并且仍然可以正常工作。 2)添加了对负数的支持。 (在原始功能中,负数最终会从-1.08904e-05变为0.0000-108904) 123456789101112131415161718192021def getExpandedScientificNotation(flt): was_neg = False if not ("e" in flt): return flt if flt.startswith('-'): flt = flt[1:] was_neg = True str_vals = str(flt).split('e') coef = float(str_vals[0]) exp = int(str_vals[1]) return_val = '' if int(exp) > 0: return_val += str(coef).replace('.', '') return_val += ''.join(['0' for _ in range(0, abs(exp - len(str(coef).split('.')[1])))]) elif int(exp) 0: return_val += str(coef).replace('.', '') return_val += ''.join(['0' for _ in range(0, abs(exp - len(str(coef).split('.')[1])))]) elif int(exp) |
CopyRight 2018-2019 实验室设备网 版权所有 |